﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio;
using DevExpress.Web.ASPxEditors;
using System.Configuration;
using Entidad;
using Negocio.BL;
using EvolSoftWeb;




namespace EvolSoftWeb
{
    public partial class wFrmGrupoModificar : System.Web.UI.Page
    {
        string idSeguridad ="2";
        OpcionLogic opcionLogic = new OpcionLogic();
        static List<ListarTreeList> listTree;

        GrupoLogic grupoLogic = new GrupoLogic();
        //SeguridadLogic logic = new SeguridadLogic();
        List<T_S_OPCION> treeItems;
        List<T_S_OPCION> treeItemsChild;



        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack){

              
                this.DatosRecuperados();
              
                this.CargarArbol(opcionLogic.ObtenerOpcionesPorGrupo2(Convert.ToInt32(txtCodigoGrupo.Text)));
               
               
            }
        }



  

        void DatosRecuperados() {
            txtCodigoGrupo.Text = Session["ID_GRUPO"].ToString();
            txtDscGrupo.Text = Session["DES_DESCRIPCION"].ToString();
            txtNombreGrupo.Text = Session["DES_NOMBRE"].ToString();
            txtUserCreacion.Text = Session["USR_CREACION"].ToString();
            if (Session["IND_ESTADO"].ToString() == "A") {
                cboEstado.Text = "Activo";
            }
            else if (Session["IND_ESTADO"].ToString() == "I")
            {

                cboEstado.Text = "Inactivo";
            }
            else {


                cboEstado.Text = "Seleccione";
            }        
        }




        //cargar treaview



        void ListarTreeView() {
            List<T_S_OPCION> listar = opcionLogic.listarTreaview();

            foreach (T_S_OPCION item in listar)
            {
                ListarTreeList obj = new ListarTreeList();
                obj.ID_OPCION = item.ID_OPCION;
                obj.DES_NOMBRE = item.DES_NOMBRE;             
                obj.ID_PADRE = Convert.ToInt32(item.ID_PADRE);
                listTree.Add(obj);
            }






            //TreeListOpcion.DataSource = listTree;
            //TreeListOpcion.DataBind();
            
            var q = from ug in opcionLogic.listarGrupoOpcion()
                    where ug.ID_OPCION == Convert.ToInt32(txtCodigoGrupo.Text)
                    select ug;


            foreach (var item in q)
            {

                for (int i = 0; i < listTree.Count; i++)
                {
                    if (item.ID_GRUPO == listTree[i].ID_OPCION)
                    {
                   

                        
                    
                      

                        break;

                    }

                }


            }




        
        
        }











        //
        protected void CargarArbol(List<int> list)
        {
            //this.TvListarOpciones.Nodes.Clear();

            try
            {
                treeItems = this.opcionLogic.listarTreaview();
                if (treeItems.Count > 0)
                {
                    this.LlenarOpciones(null, null, this.tvOpciones, list);
                }

                this.tvOpciones.ExpandAll();
            }
            catch 
            {
              
            }
          
        }






        public void LlenarOpciones(int? codigoPadre, TreeNode node, TreeView tree, List<int> list)
        {
            treeItemsChild = treeItems.FindAll(delegate(T_S_OPCION item) { return (item.ID_PADRE == codigoPadre); });

            foreach (T_S_OPCION hijos in treeItemsChild)
            {
                TreeNode newNode = new TreeNode(hijos.DES_NOMBRE, hijos.ID_OPCION.ToString());

                if (list.Contains(hijos.ID_OPCION))
                {
                    newNode.Checked = true;
                }

                if (codigoPadre == null) tree.Nodes.Add(newNode);
                else node.ChildNodes.Add(newNode);
                this.LlenarOpciones(hijos.ID_OPCION, newNode, null, list);
            }
        }














        public struct ListarTreeList{
         public int ID_OPCION { get; set; }
        public string DES_NOMBRE { get; set; }
        public int ID_PADRE { get; set; }
        
        
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtNombreGrupo.Text == String.Empty || txtDscGrupo.Text == String.Empty || cboEstado.SelectedIndex == 0)
                {
                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "Rellene los campos vacios!";
                    string script = "ShowActualizar();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true); 
                }
                else {
                    this.Actualizar();
                }
            }
            catch 
            {

            }

            
        
        
        }



        void Actualizar()
        {
            try
            {
                T_S_GRUPO grupo = new T_S_GRUPO();
                grupo.ID_GRUPO = Convert.ToInt32(txtCodigoGrupo.Text);
                grupo.DES_NOMBRE = txtNombreGrupo.Text;
                grupo.DES_DESCRIPCION = txtDscGrupo.Text;
                grupo.IND_ESTADO = cboEstado.Text.Substring(0, 1);
                grupo.USR_ACTUALIZO = Global.user;
                grupo.USR_CREACION = txtUserCreacion.Text;

                if (grupoLogic.Modicar(grupo))
                {
                    grupoLogic.EliminarGrupoopcion(Convert.ToInt32(txtCodigoGrupo.Text));
                    grupoLogic.GrabarAccesosGrupo(Convert.ToInt32(txtCodigoGrupo.Text), Tools.ObtenerNodoSeleccionados(this.tvOpciones));
                    string script = "ShowOK();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
            }
            catch (Exception)
            {

            }

           
        }

        void limpiarCampos() {
            txtNombreGrupo.Text = "";
            txtDscGrupo.Text = "";
        }
        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("wFrmGrupo.aspx?id="+idSeguridad);
        }

        protected void btnLimpiar_Click(object sender, EventArgs e)
        {
            limpiarCampos();
        }

      




   




    }
}